package com.aaa.car.dao;

import com.aaa.car.entity.Car;
import com.aaa.car.entity.CarVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (Car)表数据库访问层
 *
 * @author lei chu
 * @since 2021-02-20 19:03:20
 */
public interface CarDao {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    Car queryById(Integer id);

    /**
     * 通过实体作为筛选条件查询
     *
     * @param car 实例对象
     * @return 对象列表
     */
    List<Car> queryAll(Car car);

    /**
     * 新增数据
     *
     * @param car 实例对象
     * @return 影响行数
     */
    int insert(Car car);

    /**
     * 修改数据
     *
     * @param car 实例对象
     * @return 影响行数
     */
    int update(Car car);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(Integer id);

    /**
     * 验证车牌号是否可用
     *
     * @param id id
     * @param vin 要验证的车牌号
     * @return 是否可用
     */
    Car queryCarByIdAndVin(@Param("id") String id, @Param("vin") String vin);

    /**
     * 查找满足租出条件的汽车，用于手机端的汽车展示页面
     * @param carVo 租车条件实体
     * @return LIst
     */
    List<Car> queryCarByRentalConditions(CarVo carVo);
}